import { Router } from 'express';
import { ProductController } from '../controllers/productController';
import { authenticate } from '../middleware/auth';

const router = Router();
const productController = new ProductController();

// === 用户端路由 ===

// 获取推荐产品
router.get('/web/products/recommend', productController.getRecommendProducts.bind(productController));

// 获取置顶产品
router.get('/web/products/top', productController.getTopProducts.bind(productController));

// 获取产品列表
router.get('/web/products', productController.getProducts.bind(productController));

// 获取单个产品详情
router.get('/web/products/:slug', productController.getProductBySlug.bind(productController));

// 获取产品分类
router.get('/web/product-categories', productController.getProductCategories.bind(productController));

// === 管理端路由 ===

// 获取产品统计 (必须在 :id 路由之前)
router.get('/admin/products/stats', authenticate, productController.getProductStats.bind(productController));

// 获取产品列表 (管理端)
router.get('/admin/products', authenticate, productController.getAdminProducts.bind(productController));

// 导出产品
router.get('/admin/products/export', authenticate, productController.exportProducts.bind(productController));

// 获取单个产品详情 (管理端)
router.get('/admin/products/:id', authenticate, productController.getProductById.bind(productController));

// 创建产品
router.post('/admin/products', authenticate, productController.createProduct.bind(productController));

// 更新产品
router.put('/admin/products/:id', authenticate, productController.updateProduct.bind(productController));

// 删除产品
router.delete('/admin/products/:id', authenticate, productController.deleteProduct.bind(productController));

// === 产品分类管理 ===

// 获取产品分类列表 (管理端)
router.get('/admin/product-categories', authenticate, productController.getAdminProductCategories.bind(productController));

// 获取单个产品分类 (管理端)
router.get('/admin/product-categories/:id', authenticate, productController.getProductCategoryById.bind(productController));

// 创建产品分类
router.post('/admin/product-categories', authenticate, productController.createProductCategory.bind(productController));

// 更新产品分类
router.put('/admin/product-categories/:id', authenticate, productController.updateProductCategory.bind(productController));

// 删除产品分类
router.delete('/admin/product-categories/:id', authenticate, productController.deleteProductCategory.bind(productController));

export default router;